import { utilities } from 'nest-winston';
import * as winston from 'winston';
import DailyRotateFile from 'winston-daily-rotate-file';
import { Console } from 'winston/lib/winston/transports';

export const consoleTransport = new Console({
  level: 'info', // 日志级别
  format: winston.format.combine(
    winston.format.timestamp(), // 添加时间戳
    winston.format.ms(), // 添加执行时间
    utilities.format.nestLike('Winston'), // NestJS格式化
  ),
});

export const createDailyRotateTransport = (level: string, filename: string) => {
  return new DailyRotateFile({
    level, // 日志级别
    dirname: 'logs', // 日志文件存放的目录
    filename: `${filename}-%DATE%.log`, // 日志文件的名称
    datePattern: 'YYYY-MM-DD-HH', // 日志文件的日期格式
    zippedArchive: true, // 是否压缩日志文件
    maxSize: '20m', // 日志文件的最大大小
    maxFiles: '14d', // 日志文件的最大保留天数
    format: winston.format.combine(
      winston.format.timestamp(), // 添加时间戳
      winston.format.simple(), // 简单格式化
    ),
  });
};
